package lua.compiler;
import lua.compiler.tokens.Tokens;

import org.antlr.runtime.tree.Tree;

public class TreePrinter {

	public static void printTree(Tree tree, int level) {
		if (level == 0) {
			System.out.println("\nDrzewo rozbioru:\n");
		}
		
		// wypisujemy nr linii w ktorej znalezlismy token
		System.out.print(tree.getLine() + ":");

		// odpowiednia ilosc wciec, zeby bylo 'drzewko'
		for (int i = 0; i < level; i++)
			System.out.print("\t");
			
		int type = tree.getType();
		// nazwa tokenu (to co dostajemy od lexera)
		String token = Tokens.getToken(type);
		
		String text = tree.toString();
		if ("nil".equals(text))
			text = "PROGRAM";
		if ("<invalid>".equals(token))
			token = "";
		
		//wypisujemy nazwe tokenu i fragment zrodla ktory mu odpowiada
		System.out.println("[" + token + "] " + text);
		
		for (int i = 0; i < tree.getChildCount(); i++)
			printTree(tree.getChild(i), level+1);
	}
}